Assessing application authenticity and performing an action in response to an evaluation result

ABSTRACT

Authenticity of a new application being installed on a mobile device is evaluated to provide a result. The evaluation uses a plurality of inputs. In response to the result, an action is performed (e.g., on the mobile device itself and/or a server performing or assisting with the evaluation). For example, the evaluating may be done for an application that a user of the mobile device desires to install from an application marketplace. In another example, the action is sending of a notification to the mobile device, and the notification includes an assessment of authenticity of the new application.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is related to U.S. Non-Provisional applicationSer. No. 13/786,210, filed Mar. 5, 2013, entitled “EXPRESSING INTENT TOCONTROL BEHAVIOR OF APPLICATION COMPONENTS,” by Wyatt et al., U.S.Non-Provisional application Ser. No. 13/692,806, filed Dec. 3, 2012,entitled “COMPONENT ANALYSIS OF SOFTWARE APPLICATIONS ON COMPUTINGDEVICES,” by Wyatt et al., and U.S. Provisional Application Ser. No.61/655,822, filed Jun. 5, 2012, entitled “EXPRESSING INTENT TO CONTROLBEHAVIOR OF APPLICATION COMPONENTS,” by Halliday et al., the entirecontents of which applications are hereby incorporated by reference asif fully set forth herein.

FIELD OF THE TECHNOLOGY

At least some embodiments disclosed herein relate to evaluation/analysisof software in general, and more particularly, but not limited toassessing or evaluating the authenticity of an application or othersoftware.

BACKGROUND

The Android system requires that all installed applications be digitallysigned with a certificate whose private key is held by the application'sdeveloper. The Android system uses the certificate as a means ofidentifying the author of an application and establishing trustrelationships between applications. The certificate does not need to besigned by a certificate authority. Rather, it is typical for Androidapplications to use self-signed certificates.

Android applications that are not signed will not be installed on anemulator or a device. When a developer is ready to release anapplication for end-users, the developer signs it with a suitableprivate key. The developer can use self-signed certificates to sign itsapplications. No certificate authority is needed.

The Android system tests a signer certificate's expiration date only atinstall time. If an application's signer certificate expires after theapplication is installed, the application will continue to functionnormally. The developer can use standard tools (e.g., Keytool andJarsigner) to generate keys and sign its application .apk files.

The Android system will not install or run an application that is notsigned appropriately. This applies wherever the Android system is run,whether on an actual device or on the emulator.

When a developer builds in release mode, it uses its own private key tosign the application. When the developer compiles the application inrelease mode, a build tools uses the developer's private key along witha Jarsigner utility to sign the application's .apk file. Because thecertificate and private key used are owned by the developer, thedeveloper provides the password for the keystore and key alias. Someaspects of application signing may affect how the developer approachesthe development of its application, especially if the developer isplanning to release multiple applications.

In general, the recommended strategy for all developers is to sign allof its applications with the same certificate, throughout the expectedlifespan of its applications. As the developer releases updates to itsapplication, the developer must continue to sign the updates with thesame certificate or set of certificates, if the developer wants users tobe able to upgrade seamlessly to the new version. When the system isinstalling an update to an application, it compares the certificate(s)in the new version with those in the existing version. If thecertificates match exactly, including both the certificate data andorder, then the system allows the update. If the developer signs the newversion without using matching certificates, the developer must alsoassign a different package name to the application—in this case, theuser installs the new version as a completely new application.

When the developer has an application package that is ready to besigned, the developer can sign it using the Jarsigner tool. To sign theapplication, the developer runs Jarsigner, referencing both theapplication's APK and the keystore containing the private key with whichto sign the APK.

Maintaining the security of a private key is of critical importance,both to the developer and to the user. If the developer allows someoneto use its key, or if the developer leaves its keystore and passwords inan unsecured location such that a third-party could find and use them,the developer's authoring identity and the trust of the user arecompromised.

If a third party should manage to take a developer's key without itsknowledge or permission, that person could sign and distributeapplications that maliciously replace the developer's authenticapplications or corrupt them. Such a person could also sign anddistribute applications under the developer's identity that attack otherapplications or the system itself, or corrupt or steal user data. Adeveloper's reputation depends on its securing its private key properly,at all times, until the key is expired.

SUMMARY OF THE DESCRIPTION

Systems and methods for assessing or evaluating the authenticity of anapplication or other software (e.g., a software application beingnewly-installed on a mobile device of a user, where the user desires tobe notified if the application is determined to be fraudulent or atampered version) are described herein. Some embodiments are summarizedbelow.

In one embodiment, a method includes: evaluating, by a computing device,authenticity of a first application to provide a result, the evaluatingusing a plurality of inputs; and in response to the result, performingan action on the computing device.

In one embodiment, the evaluating comprises identifying a plurality ofapplications that are similar to the first application. The identifiedsimilar applications are then classified based on a respective signingidentifier for each application. Based on this classification,applications that have a signing identifier of a developer areidentified. Applications having a signing identifier that is differentfrom the signing identifier of the developer are also identified.

The disclosure includes methods and apparatuses which perform the abovemethods and systems, including data processing systems which performthese methods, and computer readable media containing instructions whichwhen executed on data processing systems cause the systems to performthese methods.

Other features will be apparent from the accompanying drawings and fromthe detailed description which follows.

BRIEF DESCRIPTION OF THE DRAWINGS

The embodiments are illustrated by way of example and not limitation inthe figures of the accompanying drawings in which like referencesindicate similar elements.

FIG. 1 shows a system (for control of behavior on computing devices orfor analysis of software components) in which user terminals and mobiledevices communicate with a messaging server and/or an applicationmarketplace, or with an identity server, according to variousembodiments.

FIG. 2 shows an application marketplace offering multiple applicationsfor remote installation on mobile devices, according to one embodiment.

FIG. 3 shows a screen presented by an installed application to a user ona display of a mobile device, according to one embodiment.

FIG. 4 shows a status display presented by the installed application ofFIG. 3 that indicates the status of analyzing applications on the mobiledevice, according to one embodiment.

FIG. 5 shows a set of results presented to the user from the analyzingof the applications on the mobile device, according to one embodiment.

FIG. 6 shows a screen presenting information about an advertisementnetwork incorporated in an application installed on the mobile device,according to one embodiment.

FIG. 7 shows a screen presenting an opt-out button for the user to optout of the advertisement network, according to one embodiment.

FIG. 8 shows a block diagram of a data processing system (e.g., amessaging server or an application server) which can be used in variousembodiments.

FIG. 9 shows a block diagram of a user device (e.g., a mobile device),according to one embodiment.

FIG. 10 shows a system for assessing authenticity of an applicationbeing newly-installed on a mobile device of a user, in which the mobiledevice communicates with an authenticity server to evaluate theauthenticity of the application, according to one embodiment.

DETAILED DESCRIPTION

The following description and drawings are illustrative and are not tobe construed as limiting. Numerous specific details are described toprovide a thorough understanding. However, in certain instances, wellknown or conventional details are not described in order to avoidobscuring the description. References to one or an embodiment in thepresent disclosure are not necessarily references to the sameembodiment; and, such references mean at least one.

Reference in this specification to “one embodiment” or “an embodiment”means that a particular feature, structure, or characteristic describedin connection with the embodiment is included in at least one embodimentof the disclosure. The appearances of the phrase “in one embodiment” invarious places in the specification are not necessarily all referring tothe same embodiment, nor are separate or alternative embodimentsmutually exclusive of other embodiments. Moreover, various features aredescribed which may be exhibited by some embodiments and not by others.Similarly, various requirements are described which may be requirementsfor some embodiments but not other embodiments.

As used herein, a “component” means a part of an application (e.g., anapplication that is installed by a user from an Android or othersoftware application marketplace and then executes on a mobile device).In one example, a component is provided by the application's creator orby a third party. In another example, the component may be code providedby an ad network or an analytics network.

In yet another example, components are linked libraries/SDKs that arepackaged within an application. This is code that is within theapplication, but the code is developed by a third party and provides theability for an application developer to integrate certain behaviors ofthat component into its application (e.g., displaying a certain type ofads from a certain ad network such as LeadBolt).

In one embodiment, a component (e.g., a component associated with an adnetwork) may have multiple behaviors associated with it (e.g.,notification display, settings changes, and/or information collection).For example, the behaviors of the BTController application (discussedfurther below) is the summation of the behaviors of its constituentcomponents. In some cases, components may provide the ability toselectively opt-out of individual behaviors. However, in other cases,this is not possible, and in order to opt out of any set of behaviors, auser must opt-out of the entire component.

As described in more detail below, a user may express its intent as tohow the user desires its computing device to behave. The intent may beexplicitly provided by the user or may be otherwise determined (e.g., byreference to a database on a remote server). In one embodiment, theuser's intent defines how the user wants to control receiving of certaintypes of messages (e.g., advertisements). The type of control desired bythe user in its various forms of experience on a computing device (e.g.,a mobile device) is expressed in the user's intent. This intent may beused to determine various behaviors of the computing device. Forexample, some undesired behaviors may be stopped by disabling variouscomponents of one or more applications that have been previouslyinstalled on the user's mobile device.

FIG. 1 shows a system (for control of behavior on computing devices orfor analysis of software components, each as described herein) in whichuser terminals and mobile devices (examples of mobile devices includecell phones, smartphones, and tablet devices such as the iPhone deviceor an Android tablet), or other computing devices, communicate with amessaging server 125 and/or an application marketplace 123, or with anidentity server 110, according to various embodiments as describedbelow. In FIG. 1, the user terminals (e.g., 141, 143, . . . , 145)and/or mobile devices 147, 149 are used to access and/or communicatewith identity server 110, application marketplace 123 (e.g., an Androidor Google Play marketplace), and/or messaging server 125 (e.g., an emailserver) over a communication network 121 (e.g., the Internet, a widearea network, or other wired or wireless communications network).

Network 121 may be used to download and remotely install applicationsselected from marketplace 123 (e.g., using Google Play or the AndroidMarket). Marketplace 123 may include one or more web servers (or othertypes of data communication servers) to communicate with the userterminals (e.g., 141, 143, . . . , 145) and mobile devices 147, 149.

As an example, an owner of an Android phone (e.g., mobile device 147)may visit a web site hosted by marketplace 123 and select a free pokergame application for remote installation on mobile device 147. The usermay authenticate itself to marketplace 123 by its email address (e.g.,Gmail address) and password.

The marketplace 123 and/or messaging server 125 are connected torespective data storage facilities to store applications, messagingaccount data for users, user preference data, and other data. In FIG. 1,messaging server 125 is connected to communication network 121 todeliver messages (e.g., email or text) to user terminals 141-145 or oneof a user's mobile devices 147, 149.

In one embodiment, a software server 127 is coupled to communicate withapplication marketplace 123 and/or mobile devices 147, 149 bycommunication network 121. Server 127 stores, for example, anapplication (e.g., the Ad Network Detector discussed below) in memory,and sends the application to application marketplace 123 for laterdownload and installation by a user onto, for example, mobile device147. In another embodiment, software server 127 is a developer computer,or another computer, used to upload an application to marketplace 123.

In one embodiment, server 127 communicates with the application (nowexecuting on mobile device 147 after installation by the user). Theapplication is configured to identify at least one behavior on mobiledevice 147 as discussed herein. The at least one behavior is associatedwith each of a plurality of components of a plurality of otherapplications installed on the mobile device 147 (e.g., otherapplications previously downloaded by the user from the Google Playservice), and the at least one behavior includes a first behaviorassociated with a first component.

Server 127 receives at least one behavioral preference of the user frommobile device 147, and the at least one behavioral preference isdetermined by the application based on input from the user (e.g., a userselection from a menu or results list). Server 127 stores the at leastone behavioral preference (e.g., stores in a memory of server 127) forlater uses such as responding to queries from other computing devicesregarding the intent of the user of mobile device 147. In oneembodiment, server 127 is independently maintained by each of many adnetworks. The Ad Network Detector discussed herein may manage thesebehavioral preferences on behalf of a user for these networks.

In an alternative embodiment, identity server 110 includes a database112, which stores component identities 114 and user policies 116. Mobiledevice 149 includes applications 102 that have been previously installedon mobile device 149. Applications 102 may be installed from applicationmarketplace 123 or software server 127.

Applications 102 include components 104 and 106. The user policy 108 isstored locally in a memory of mobile device 149. During operation, asdiscussed in more detail below, user policy 108 may be used to definethe handling of components 104 and 106 on mobile device 149.

A user policy for mobile device 149 may alternatively (or in addition touser policy 108) be stored as one of user policies 116 on identityserver 110. User policy may be enforced on mobile device 149 usingeither a local user policy or a remote user policy, or a combinationthereof.

As discussed in more detail below, after an application 102 is installedon mobile device 149, components 104 and 106 may be identified andbehaviors exhibited on mobile device 149 may be attributed to one ormore of components 104 and 106. Any given component (e.g., component104) may be present in several different applications on mobile device149 and/or may be common to numerous copies or versions of anapplication that have been installed on mobile or other computingdevices for large numbers of other users. In one embodiment, thiscommonality of component presence permits observing and collectingstructural and behavioral data associated with the component (e.g., howthe component behaves on other mobile devices). This known componentdata may be stored in database 112, and the component data may beassociated with a particular component identity 114. Thus, a datarepository of prior component data can be used to compare to data morerecently obtained for new components (such as those identified innewly-installed applications on mobile device 149).

More specifically, as characteristics and behaviors associated withcomponents on mobile device 149 are identified and attributed, thesecharacteristics and behaviors may be compared with known characteristicsand behaviors stored either locally on mobile device 149 or storedremotely on identity server 110 as data associated with componentidentities 114. The results from such comparisons may be used for makingdecisions regarding configuration and/or disabling of one or moreparticular components on the mobile device or other computing device(e.g. user terminal 141), as discussed in greater detail below.

Although FIG. 1 illustrates an exemplary system implemented inclient-server architecture, embodiments of the disclosure can beimplemented in various alternative architectures. For example, theidentity server 110 or application marketplace 123 may be implementedvia a peer to peer network of user terminals in some embodiments, whereapplications and data/information from mobile devices are shared viapeer to peer communication connections.

In some embodiments, a combination of client server architecture andpeer to peer architecture can be used, in which one or more centralizedserver may be used to provide some of the information and/or servicesand the peer to peer network is used to provide other information and/orservices. Thus, embodiments of the disclosure are not limited to aparticular architecture.

FIG. 2 shows a web page of application marketplace 123 (e.g., the GooglePlay service) offering multiple applications (A, B, C) for remoteinstallation on mobile devices, according to one embodiment. A useraccesses the web page and selects an application for remoteinstallation. The user may pay for the application on a web pageprovided by marketplace 123 (unless the application is free of charge).

For example, one of the applications available for download may be theapplication known as “BTController” as available on the Google Playservice. Some user reviews (as posted on Google Play) for thisapplication have included complaints about excessive advertisements onthe user's mobile device after installation.

In one embodiment, an application referred to herein as “Ad NetworkDetector” may be downloaded from the Google Play service onto a user'smobile device 147. The expressing of user intent and control of behaviorfor mobile device 147 as described below may be incorporated into orotherwise work in conjunction with the Ad Network Detector application.

The Ad Network Detector application scans a user's phone or tablet forthe presence of ad networks used in mobile apps, giving the userinformation about what types of ads can be displayed, and whatinformation is gathered by the ad networks. With access to thisinformation, the user is able to decide whether to keep the applicationthat has a particular ad network on the user's phone.

Mobile device (e.g., smartphone or tablet) usage has increaseddramatically, and some advertisers have begun to experiment withaggressive, new techniques to display ads on mobile devices. Thesetechniques include pushing ads to the standard Android notification bar,dropping generically designed icons on the mobile desktop, and modifyingbrowser settings like bookmarks or the default homepage. Because each ofthese techniques can display an advertisement outside the context of aspecific application, it's difficult for users to know exactly which appis responsible for any given ad. The Ad Network Detector applicationprovides a method for users to determine which ad network andapplication are the source for such ads.

Some ad networks also collect information that identifies a specificdevice or user for use in targeted marketing campaigns. Much like forbrowser-based ads, this practice allows users to see more personalizedor relevant ads. It is sometimes difficult for a user to know whataspects of the user's information are collected by ad networks. Thecapabilities and information collection methods specific to each adnetwork may be determined from investigation. The Ad Network Detectorapplication informs the user what data is being collected, and by whichad network/application.

In this embodiment, the Ad Network Detector application providesinformation to the user to about practices supporting mobileadvertising. The application may detect many ad networks. Some of the adnetworks detected may include the following examples:

-   -   Lead Bolt    -   AdFonic    -   AdKnowledge    -   AdMob    -   BuzzCity    -   Casee    -   Everbadge    -   JumpTap

Regarding ad network capabilities and privacy, in this embodiment thecapabilities and information collection methods specific to each adnetwork may be investigated. Based on this investigation, the Ad NetworkDetector application details what identifying information is collectedby each ad network, and how it is collected. This may include personalinformation directly linkable to an individual user, such as an emailaddress, and device and network information that is specific to anindividual device or network, rather than to the user.

FIG. 3 shows a screen 300 presented by an installed application 304(e.g. the Ad Network Detector application after installation fromapplication marketplace 123) to a user on a display of mobile device147, according to one embodiment. In this embodiment, a user expresseshis or her intent to control behavior of application components onmobile device 147.

In one example, a BTController application has previously been installedon the mobile device 147 by the user, among numerous otheruser-installed applications. The BTController includes an advertisementnetwork component having several behaviors. A first behavior is thedisplay of advertisements in the notification bar of mobile device 147.

In this embodiment, the components of each application (e.g.,BTController) previously installed on mobile device 147 are determined(e.g., determined by application 304 or another tool installed on themobile device for that purpose). For example, a scan to determine thesecomponents may be initiated by the user by her clicking on or touching astart scan button 302.

An example of a component to be identified is the Lead Bolt advertisingnetwork included in the BTController application. In addition, at leastone behavior (e.g., displaying of ads in the notification bar)associated with each of the components for an installed application isidentified.

The identified behaviors are presented to the user (e.g., in a list ofscan results). At least one behavioral preference expressing the intentof the user is determined (e.g., a desire of the user to opt out of aparticular behavior). This intent is then implemented on the mobiledevice by reconfiguring the identified components of variousapplications on the mobile device as necessary to conform to the user'sexpressed intent.

FIG. 4 shows a status display 400 presented to the user by the installedapplication 304 that indicates the status of analyzing applications onthe mobile device 147 (i.e., applications other than application 304that are installed on the mobile device) to identify their respectivecomponents, according to one embodiment. An extent of progress of theanalysis or scan is indicated by bar 402.

FIG. 5 shows a set of results 500 presented to the user from theanalyzing of the applications on the mobile device 147, according to oneembodiment. The results include a list of behaviors identified. Forexample, behavior 502 is the display of ads in the notification bar ofthe mobile device. The number of applications identified that include acomponent exhibiting the listed behavior is indicated in verticalarrangement or column 506. For example, only one application wasidentified that includes a component exhibiting behavior 502. Twoapplications were identified that include a component exhibitingbehavior 508. In contrast, zero applications were identified including acomponent that exhibits behavior 504. It should be noted that the count,in this implementation, refers to the number of components that exhibita particular behavior. This count (or an additional count) in otherimplementations could reflect the number of applications that exhibitthe behavior. Any given component may be present in several differentapplications, so these two counts are not necessarily equal.

FIG. 6 shows a screen 600 presenting information about an advertisementnetwork 602 (LeadBolt) incorporated in an application 604 (BTController)installed on mobile device 147, according to one embodiment. Screen 600includes a description 606 of the behavior associated with application604.

FIG. 7 shows screen 600 presenting an opt-out button 702 for the user toopt out of advertisement network 602, according to one embodiment.Screen 600 includes a description 700 describing an opt-out option foradvertisement network 602. The user expresses her intent by clicking onor touching (e.g., on a touch screen) opt-out button 702.

In one embodiment, the user's intent may be stored locally in a memoryof mobile device 147. Alternatively, this intent may be stored remotelyon a different computing device such as a server (e.g., software server127 of FIG. 1, which may be a server operated by the software developerof the Ad Network Detector discussed above) accessible via communicationnetwork 121. This server may also be accessible by third-partyapplication developers in order to conform behaviors to intentspreviously expressed by respective users. In another embodiment, thisserver is operated by the owner of the component.

Various other embodiments are now described below. In a firstembodiment, a computer-readable storage medium stores computer-readableinstructions (e.g., instructions of an Ad Network Detector), which whenexecuted, cause a computing apparatus (e.g., a mobile device of a user)to, for an application installed on the mobile device of the user,determine components of the application; identify, via at least oneprocessor of the mobile device, at least one behavior associated witheach of the components, including a first behavior (e.g., ad display ina notification bar) associated with a first component; present resultsfrom the identifying to the user, the results to include a list ofbehaviors including the first behavior; and receive a selection from theuser of at least one behavioral preference. Further informationregarding determining the components of an application is discussed ingreater detail below in the section titled “Analyzing Components of anApplication”.

In one embodiment, the at least one behavioral preference is selectedfrom the group consisting of: opting out of the first behavior; optingout of one or more of the components including the first component; aset of user preferences for specifically-identified behaviors; and apolicy. In one embodiment, the at least one behavioral preference is apolicy, and the policy is enforced on new applications installed on themobile device. In one embodiment, the first component enables the userto selectively opt out of individual behaviors of the first component.

In one embodiment, the selection from the user of at least onebehavioral preference is to opt out of the first behavior, and theinstructions further cause, after the opting out, running the firstcomponent to determine whether the first behavior is active. In oneembodiment, the determining whether the first behavior is activecomprises at least one activity selected from the group consisting of:running the first component in an emulated environment on a differentcomputing device (e.g., software server 127); and monitoring behavior onthe mobile device after receiving the selection from the user.

In one embodiment, the selection from the user of at least onebehavioral preference is to opt out of the first behavior, and theinstructions further cause, after the opting out, determining a statusof the opting out using an application programming interface of thefirst component. In one embodiment, the instructions further cause themobile device to, in response to the selection from the user,reconfigure execution of the first component so that the first behaviorno longer occurs on the mobile device.

In one embodiment, the instructions further cause, in response to theselection from the user, uninstalling the application from the mobilecomputing device. In one embodiment, the instructions further cause, inresponse to the selection from the user, disabling further execution ofthe first component on the mobile device. In one embodiment, the firstcomponent is shared by the application and an additional application,and the disabling affects both the application and the additionalapplication.

In one embodiment, the first behavior is a presentation of messages tothe user. In one embodiment, the messages include at least oneadvertisement presented in a notification area of the mobile device. Inone embodiment, the presentation of messages is outside of a context ofthe application presented to the user during normal operation of theapplication. In one embodiment, the first component is a part of theapplication.

In one embodiment, the instructions further cause displaying opt-outoptions to the user, wherein the opt-out options are solely forapplications already installed on the mobile device. In one embodiment,the instructions further cause displaying opt-out options to the user,the opt-out options comprising all possible opt-out flows for the useron the mobile device as determined from a database. In one embodiment,the first component is a linked library packaged with the applicationprior to installation of the application on the mobile device.

In one embodiment, the mobile device is a tablet device. In oneembodiment, the first component is a portion of the executable code ofthe application, and the executable code enables the application tointeract with an advertising network or an analytics network. In oneembodiment, interaction with the advertising network comprises displayof advertisements provided from the advertising network.

In one embodiment, a non-transitory computer-readable storage mediumstores computer-readable instructions, which when executed, cause acomputing apparatus to: for an application installed on a computingdevice of a user, determine components of the application; identify, viaat least one processor, at least one behavior associated with each ofthe components, including a first behavior associated with a firstcomponent; and determine at least one behavioral preference of the user.

In one embodiment, the instructions further cause storing the at leastone behavioral preference on the computing device so that theapplication can locally determine the at least one behavioralpreference. In one embodiment, the instructions further cause the firstcomponent to evaluate the at least on behavioral preference to determinehow the first component is to behave on the computing device.

In one embodiment, the instructions further cause storing the at leastone behavioral preference on a different computing device so that anadvertisement network associated with the first component can query thedifferent computing device (e.g., software server 127) in order todetermine the at least one behavioral preference of the user. In oneembodiment, the instructions further cause the first component toexecute in conformance with results from the query of the differentcomputing device, wherein the query includes a user identifier of theuser.

In one embodiment, the instructions further cause: in response todownloading or installing the application, scanning the application toconfirm compliance with the at least one behavioral preference of theuser; and if the application violates the at least one behavioralpreference, alerting the user of the violation or blocking installationof the application.

In one embodiment, a system comprises: a display; at least oneprocessor; and memory storing instructions configured to instruct the atleast one processor to: determine components of an installedapplication; identify at least one behavior associated with each of thecomponents, including a first behavior associated with a firstcomponent; present, on the display, at least one component of theinstalled application for which a user can opt out; and receive aselection from the user of an opt-out for a first component of the atleast one component.

In one embodiment, the instructions are further configured to instructthe at least one processor to present an opt-out status to the user forcomponents for which the user has previously opted out.

In one embodiment, a method includes: for an application installed on acomputing device of a user, determining components of the application;identifying, via at least one processor of the computing device, atleast one behavior associated with each of the components, including afirst behavior associated with a first component; presenting, on adisplay of the computing device, results from the identifying to theuser, the results to include a list of behaviors including the firstbehavior; and receiving, via a user interface of the computing device, aselection from the user of at least one behavioral preference.

In one embodiment, a method includes: storing, in a memory (e.g., amemory of software server 127), a first application (e.g., the AdNetwork Detector application) comprising computer-readable instructions,which when executed, cause a mobile device of a user to: determinecomponents of a second application (e.g., BTController application 604)installed on the mobile device; identify at least one behaviorassociated with each of the components, including a first behaviorassociated with a first component (e.g., Lead Bolt component 602); anddetermine at least one behavioral preference of the user; and sending,via at least one processor (e.g., microprocessor(s) of software server127), over a communication network, the first application for storage ina data processing system (e.g., application marketplace 123) forsubsequent installation from the data processing system onto the mobiledevice.

In one embodiment, the method further comprises communicating, via theat least one processor, with the first application after installation ofthe first application on the mobile device. In one embodiment, the dataprocessing system comprises an application marketplace. In oneembodiment, a network operator (e.g., Verizon or AT&T) controls the dataprocessing system, and the mobile device is configured to operate with acellular network operated by the network operator.

In one embodiment, a system (e.g., software server 127) comprises: atleast one processor; and memory storing a first application, which whenexecuted on a mobile device of a user, causes the mobile device to:determine components of a second application installed on the mobiledevice; identify at least one behavior associated with each of thecomponents, including a first behavior associated with a firstcomponent; and determine at least one behavioral preference of the user;and the memory further storing instructions configured to instruct theat least one processor to send the first application to a dataprocessing system (e.g., application marketplace 123) so that the firstapplication can be later installed, over a communication network, on themobile device from the data processing system.

In one embodiment, the instructions are further configured to instructthe at least one processor to communicate with the first applicationafter installation of the first application on the mobile device.

In one embodiment, a method includes: communicating, via at least oneprocessor (e.g., a processor of software server 127), with anapplication (e.g., the Ad Network Detector application) executing on amobile device of a user, the application identifying at least onebehavior on the mobile device, the at least one behavior associated witheach of a plurality of components of a plurality of other applicationsinstalled on the mobile device, and the at least one behavior includinga first behavior associated with a first component; receiving at leastone behavioral preference of the user from the mobile device, the atleast one behavioral preference determined by the application based oninput from the user; and storing, in a memory (e.g., storing in adatabase distributed among multiple database servers), the at least onebehavioral preference.

In one embodiment, the method further comprises storing the at least onebehavior. In one embodiment, the method further comprises receiving aquery from an advertisement network, associated with the firstcomponent, the query requesting the at least one behavioral preferenceof the user. In one embodiment, the method further comprises receiving,from the mobile device, an identification of the first component; andrunning, via the at least one processor, the first component in anemulated environment to determine whether the first behavior is active.

In one embodiment, the method further comprises receiving a queryregarding the at least one behavioral preference in order to determineconformance of a new application with the at least one behavioralpreference. In one embodiment, the method further comprises providinginformation in response to a request, received over a communicationnetwork, in order to evaluate the at least one behavioral preference anddetermine how the first component is to behave on the mobile device.

Additional exemplary, non-limiting details regarding variousimplementations of the above embodiments are now described here below.In one example, a user may opt-out of specific components (e.g., asdetermined using the approaches described herein). The user is presenteda list of components that the user can opt out of. The user may performopt-out actions, or these may be done automatically upon user request orselection. Then, the user may see (e.g., on a display of a mobiledevice) a status indication that the user has opted out of identifiedcomponents.

In one embodiment, there are various types of opt-out options. Forexample, a user may opt-out entirely of a component, opt-out ofparticular behaviors of a component, opt-in entirely to a component,opt-in to particular behaviors of a component, purge some or all datacollected by a component, reset an identifier used to identify the useror device to a component, or otherwise modify the component's behavioron the device or the data transferred to or from the component on thedevice.

In one embodiment, opt-out options may be displayed to a user (e.g., ona display of a mobile device) using various approaches. In a firstapproach, this is done by detecting which components are present ininstalled applications on a mobile device, and then only displayingopt-out flows for the applications are installed on the mobile device.In a second approach, input is received from a user as to whichbehaviors the user wishes to opt out of. In a third approach, allpossible opt-out flows, as determined from a database, are presented tothe user.

In one embodiment, a status for opt-out may be determined in variousways. A first way uses an API provided by the vendor or developer of thecomponent to determine the opt-out status. A second way determineswhether behavior is still active by running the corresponding component(e.g., in an emulated environment on a server or by monitoring behavioron the user's mobile device).

In one embodiment, a user declares preferences for specific behaviorsdesired on the user's mobile device. The components themselves evaluatethese declared preferences in order to determine how the componentsshould behave on the user's mobile device.

For example, the user may set its preferences, and then thesepreferences are stored locally or on a remote server (e.g., softwareserver 127). A component queries these preferences (e.g., by sending aquery) in order to determine how the component should behave (or isrequired to behave by the mobile device or another computing device).

In one embodiment, various types of preferences that can be set by theuser relate to the following: location collection for targeted ads,notifications in a notification area of the user's device, planting ofbookmarks or icons on a device, and app tracking used to delivertargeted ads (e.g., related to determining what apps a user hasinstalled).

In one embodiment, various methods may be used for storing the userspreferences. In a first approach, local service on a device is used,whereby applications can query to determine what preferences a user hasset.

In a second approach, a server-side service permits ad networks to querya user's preferences based on a user identifier (e.g., phone number,IMEI, Android ID, Apple UDID, or hashed/salted-hashed versions of them).

In another embodiment, preferences are declared for which behaviors auser desires. Automatic scanning or alerting is performed when anapplication that violates these preferences is downloaded or installed.

For example, upon installation, the mobile device detects whichcomponents are in an application, and determines the behaviors that areassociated with components of the application. If any of these behaviorsare disallowed, or require an alert, the mobile device may either blockthe application from installing (or notify the user to uninstall theapplication), or may alert the user that the application contains adisallowed behavior in one of its components.

Now discussing additional non-limiting examples, there are variousmechanisms that a user can use to express his or her intent. One exampleis an affirmative opt-in or opt-out for specific behaviors. For example,a user may say she does not want a specific component to track herlocation, or she does not want Google analytics to know certaininformation about her. Another might be that the user sets a preferenceindicating the desire that the user does not want any third partycomponents to have access to or view the user's location data.

In another example, an application policy may be implemented. For anyapp that has a component that performs an unidentified behavior, the AdNetwork Detector will block the app from being installed on the user'sphone or other device. These are behavior-based preferences that aremanifested in the blockage of installation for any applications that maycontain components that express such behaviors.

In one example, when an application is running on a user's phone, itshould ask a preference service or a preference store (e.g., implementedon software server 127) what the preference is for the user and thenrespect that preference during execution. Information about userpreferences for many users may be made available in a single onlinelocation so that a component can query and respect the preferences.

Regarding determining the components that are present in an application,the application can be identified and broken into components. Afteridentification, there are various techniques that may be used todetermine the behavior of those identified components. In some cases,structural comparisons of the call graphs of components in anapplication may be examined (e.g., determining which component istalking to the operating system of the mobile device, and which aspectsof the operating system are involved). Other forms of static analysismay also be used that involve looking at the code inside of a component.By looking at the code, it can be determined whether the component canobtain a user's location, for example, or perform other functions. Inone example, a knowledge base may be maintained that includes a list ofcomponents that are commonly distributed online and the correspondingbehaviors of those components.

Also, dynamic analysis may be used, which is essentially running theapplication component in an emulated environment or on an actual deviceand detecting what is occurring (e.g., what services the componentconnects to or communicates with) on a user device to determine whethera component has a particular behavior. Additional details regardingdetermination of components and component attribution are provided inthe section below titled “Analyzing Components of an Application”.

In one example, the user may be presented with a screen that shows theapplications installed on the user's device or the behaviors on thedevice (or even the full set of all behaviors that are possible on thedevice, even outside of the apps that the user has already installed onthe device) and what applications/components the behaviors areattributed to.

In one example, a user can opt out of specific components. The user maybe shown what components are on already her phone, or the user can sayshe does not want a certain type of behavior, and the Ad NetworkDetector only shows the user the specific network opt-outs that involvethat behavior.

In another example, the user has expressed her preferences regardingbehavior. An online preference service stores these preferences, andcomponents are required to query the service prior to installation on amobile device of the user. The service may be implemented on the mobiledevice, or on a separate server.

Additional information regarding various non-limiting examples of mobiledevices and their usage more generally, including the presenting ofinformation regarding a mobile device to a user, is described in U.S.Pat. No. 8,538,815, issued Sep. 17, 2013, entitled “SYSTEM AND METHODFOR MOBILE DEVICE REPLACEMENT,” by Mahaffey et al.; U.S. patentapplication Ser. No. 13/960,585, filed 2013 Aug. 6 (which is acontinuation of U.S. Pat. No. 8,538,815), and is entitled “SYSTEM ANDMETHOD FOR PROVIDING OFFERS FOR MOBILE DEVICES”; and U.S. patentapplication Ser. No. 14/098,473, filed 2013 Dec. 5 (which is acontinuation of U.S. patent application Ser. No. 13/960,585), and isentitled “SYSTEM AND METHOD FOR GENERATING EFFECTIVE OFFERS TO REPLACEMOBILE DEVICES,” the entire contents of which applications areincorporated by reference as if fully set forth herein.

FIG. 8 shows a block diagram of a data processing system (e.g., anidentity server 110, a messaging server 125, application marketplace123, or software server 127) which can be used in various embodiments.While FIG. 8 illustrates various components of a computer system, it isnot intended to represent any particular architecture or manner ofinterconnecting the components. Other systems that have fewer or morecomponents may also be used.

In FIG. 8, the system 201 includes an inter-connect 202 (e.g., bus andsystem core logic), which interconnects a microprocessor(s) 203 andmemory 208. The microprocessor 203 is coupled to cache memory 204 in theexample of FIG. 8.

The inter-connect 202 interconnects the microprocessor(s) 203 and thememory 208 together and also interconnects them to a display controllerand display device 207 and to peripheral devices such as input/output(I/O) devices 205 through an input/output controller(s) 206. Typical I/Odevices include mice, keyboards, modems, network interfaces, printers,scanners, video cameras and other devices which are well known in theart.

The inter-connect 202 may include one or more buses connected to oneanother through various bridges, controllers and/or adapters. In oneembodiment the I/O controller 206 includes a USB (Universal Serial Bus)adapter for controlling USB peripherals, and/or an IEEE-1394 bus adapterfor controlling IEEE-1394 peripherals.

The memory 208 may include ROM (Read Only Memory), and volatile RAM(Random Access Memory) and non-volatile memory, such as hard drive,flash memory, etc.

Volatile RAM is typically implemented as dynamic RAM (DRAM) whichrequires power continually in order to refresh or maintain the data inthe memory. Non-volatile memory is typically a magnetic hard drive, amagnetic optical drive, or an optical drive (e.g., a DVD RAM), or othertype of memory system which maintains data even after power is removedfrom the system. The non-volatile memory may also be a random accessmemory.

The non-volatile memory can be a local device coupled directly to therest of the components in the data processing system. A non-volatilememory that is remote from the system, such as a network storage devicecoupled to the data processing system through a network interface suchas a modem or Ethernet interface, can also be used.

In one embodiment, a data processing system as illustrated in FIG. 8 isused to implement application marketplace 123, messaging server 125,and/or other servers.

In another embodiment, a data processing system as illustrated in FIG. 8is used to implement a user terminal, a mobile device, or anothercomputing device on which an application is installed. A user terminalmay be in the form, for example, of a notebook computer or a personaldesktop computer.

In some embodiments, one or more servers of the system can be replacedwith the service of a peer to peer network of a plurality of dataprocessing systems, or a network of distributed computing systems. Thepeer to peer network, or a distributed computing system, can becollectively viewed as a server data processing system.

Embodiments of the disclosure can be implemented via themicroprocessor(s) 203 and/or the memory 208. For example, thefunctionalities described can be partially implemented via hardwarelogic in the microprocessor(s) 203 and partially using the instructionsstored in the memory 208. Some embodiments are implemented using themicroprocessor(s) 203 without additional instructions stored in thememory 208. Some embodiments are implemented using the instructionsstored in the memory 208 for execution by one or more general purposemicroprocessor(s) 203. Thus, the disclosure is not limited to a specificconfiguration of hardware and/or software.

FIG. 9 shows a block diagram of a user device (e.g., a mobile device oruser terminal) according to one embodiment. In FIG. 9, the user deviceincludes an inter-connect 221 connecting the presentation device 229,user input device 231, a processor 233, a memory 227, a positionidentification unit 225 and a communication device 223.

In FIG. 9, the position identification unit 225 is used to identify ageographic location. The position identification unit 225 may include asatellite positioning system receiver, such as a Global PositioningSystem (GPS) receiver, to automatically identify the current position ofthe user device.

In FIG. 9, the communication device 223 is configured to communicatewith a network server to provide data, including location data. In oneembodiment, the user input device 231 is configured to receive orgenerate user data or content. The user input device 231 may include atext input device, a still image camera, a video camera, and/or a soundrecorder, etc.

Analyzing Components of an Application

Various additional embodiments related to component analysis andattribution (e.g., identifying and determining components of anapplication) are now set forth below. The embodiments below do not limitthe generality of any embodiments in the foregoing description.

In one embodiment, an application is a mobile application, whichcontains one or more components (e.g., a library, ad network oranalytics software development kit (SDK), or other set of code designedto work together). A component identity (e.g., component identity 114)is information about a component. Examples of component identitiesinclude the following: a category (e.g. ad network, analytics, andmalware SDK), authorship (e.g. Acme, Inc., John Smith), name of acomponent (e.g. “AdMob”), a range of versions or all versions of acomponent (e.g. AdMob 6.x, AdMob, zlib), and a particular version of acomponent (e.g. zlib 1.2.7, AdMob SDK 6.0.1). The data associated with agiven component may be stored in database 112.

In one embodiment, a component's behavior is generally that behaviorexisting or occurring (e.g., functions performed) when a component isfunctioning on a computing device (e.g., functioning in an application102 running on mobile device 149). One example of a behavior is thesending of certain types of data to a server (e.g., sending browserhistory to a server at www1.adcompany.com, or sending a location to aserver at tracking.analyticscompany.net). Other examples include thefollowing: accessing data on a computing device (e.g., contacts, callhistory); and performing certain functions on a device (e.g., changingbrightness of a screen, sending a text message, making a phone call,pushing advertisements into a notification bar).

In one embodiment, a component's structure is how a component isimplemented in code. This structure may include a code package and/or acode module structure. Also, a component's structure may includecharacteristics of the executable code of the component, such as forexample, cross-references in a control flow/call graph, references tostatic data, and machine instructions used.

Various further embodiments related to component analysis are nowdescribed below. In a first embodiment, a non-transitorycomputer-readable storage medium stores computer-readable instructions,which when executed, cause a computing system to: for an application(e.g., one of applications 102) installed on a computing device (e.g.,mobile device 149) of a user, determine components (e.g., components 104and 106) of the application; and identify, via at least one processor,at least one behavior (e.g., sending device location to an ad server)associated with each of the components, including a first behaviorassociated with a first component. The instructions may cause thecomputing system to present, on a user display of the computing device,an identification of the components. The instructions may cause thecomputing system to determine at least one behavioral preference of theuser.

In one embodiment, the instructions cause the computing system to storea user policy (e.g., user policy 108 or one of user policies 116) basedat least in part on the at least one behavioral preference (e.g., userintents expressed by the user on a mobile device), and to enforce theuser policy on new applications installed on the computing device.

In one embodiment, the instructions cause the first component to executein conformance with results from a query of an identity server (e.g.,identity server 110 or another computing device). The instructions maycause the computing system to, in response to installing theapplication, scan the application to confirm compliance with a userpolicy of the user, where the user policy stored on an identity server.In one embodiment, the instructions may cause the computing system toenforce, based on identified behaviors associated with the components, auser policy for each of the components.

The instructions may cause the computing system to compare permissiblebehaviors in the user policy for the components with the identifiedbehaviors. In one example, the comparing of the permissible behaviorscomprises determining behaviors, observed for the components on othercomputing devices, from a data repository (e.g., database 112). Theinstructions may cause the computing device to, in response to thedetermining the behaviors from the data repository, configure or disableexecution of one or more of the components on the computing device.

In one embodiment, a system includes: a data repository (e.g., database112) storing component data for known components, the component dataincluding data for a first known component; at least one processor; andmemory storing instructions, which when executed on a computingapparatus, cause the computing apparatus to: for a new component in afirst application for a computing device of a user, perform a comparisonof the new component to the component data; and based on the comparison,make a determination that the new component corresponds to the firstknown component.

In one embodiment, the instructions further cause the computingapparatus to, in response to the determination, perform at least one of:comparing a first known behavior of the first known component to a userpolicy of the user; and comparing an observed behavior of the newcomponent to the user policy. In one embodiment, the component dataincludes component identities (e.g., component identities 114), eachcomponent identity corresponding to respective identifying informationfor a known component. In one embodiment, the determination is madeprior to installing the new component on the computing device.

In one embodiment, the instructions further cause the computingapparatus to associate a similarity value (e.g., a value within anarbitrary range of zero to one) with the comparison, and wherein thedetermination is made in response to the similarity value being greaterthan a threshold value. In alternative embodiments other forms ofcomparison of the similarity value to a threshold may be done (e.g.,where the similarity value is lower than the threshold). In oneembodiment, the comparison is based at least in part on a structure ofthe new component, the structure selected from the group consisting of apackaging structure, a module structure, and an executable codestructure.

In one embodiment, the component data includes known structuralcharacteristics and known behavioral characteristics. In one embodiment,the performing the comparison comprises comparing the known structuralcharacteristics and the known behavioral characteristics to identifiedcharacteristics of the new component.

In one embodiment, the instructions further cause the computingapparatus to generate a notification when the identified characteristicsare determined to differ from at least one of the known structuralcharacteristics and the known behavioral characteristics. In oneembodiment, the generating the notification comprises sending an alertto the computing device.

In one embodiment, a method includes: storing, in memory, component datafor known components, the component data including data for a firstknown component; for a new component in a first application for acomputing device of a user, perform, via at least one processor, acomparison of the new component to the component data; and based on thecomparison, make a determination that the new component corresponds tothe first known component.

In one embodiment, the new component is selected from the groupconsisting of code from the first application, and a library in thefirst application. In one embodiment, each of a plurality of differentapplications includes the new component, the new component correspondsto a set of behaviors when executed on a computing device, and thecomponent data comprises behavioral data including the set of behaviors.

In one embodiment, the method further comprises associating the set ofbehaviors with the new component. In one embodiment, each of a pluralityof computing devices has been observed when running a respective one ofthe different applications, and each of the plurality of computingdevices exhibits the set of behaviors. In one embodiment, thedetermination is based in part on a context of operation of the newcomponent on the computing device.

In one embodiment, the context is an accessing, during execution of thefirst application, of location information while the first applicationhas a visible presence to a user (e.g., the first application ispresenting location information to the user on a user display), and theset of behaviors includes determining a location of the computingdevice. In one embodiment, the component data includes a plurality ofcontexts each associated with at least one acceptable behavior. In oneembodiment, the component data includes risk scores for knowncomponents, and the method further comprises providing a risk score inresponse to a query regarding an application installed or to beinstalled on the computing device of the user.

In one embodiment, a method comprises: storing, in memory, a firstapplication comprising computer-readable instructions, which whenexecuted, cause a mobile device of a user to: for a new component of asecond application installed on the mobile device, perform a comparisonof the new component to component data for known components, thecomponent data including data for a first known component; and based onthe comparison, make a determination that the new component correspondsto the first known component; and sending, via at least one processor,over a communication network, the first application for storage in adata processing system for subsequent installation from the dataprocessing system onto the mobile device.

In one embodiment, a system includes: at least one processor; and memorystoring a first application, which when executed on a mobile device of auser, causes the mobile device to: for a new component of a secondapplication installed on the mobile device, perform a comparison of thenew component to component data for known components, the component dataincluding data for a first known component; and based on the comparison,make a determination that the new component corresponds to the firstknown component; and the memory further storing instructions configuredto instruct the at least one processor to send the first application toa data processing system so that the first application can be laterinstalled, over a communication network, on the mobile device from thedata processing system.

Now discussing a component analysis process for one particularembodiment, a new application may be decomposed into identifiablecomponents. An identity of each component may be displayed to the user.Behavioral and/or structural characteristics attributable to eachcomponent identity may be identified. The behavior for a given componentmay be displayed to the user.

A user policy (e.g., user policy 108) based on component behavior may beenforced on the user's computing device. For example, the user policymay require that there be no applications that send location to anadvertising network. In another example, the user policy may requirethat no applications send identifiers to an advertising network.

Behavioral and/or structural characteristics of a component present inthe new application may be identified. This may be, for example, anapplication 102 that has been installed on mobile device 149.

A comparison is made between the characteristics attributable to thecomponent identity and the characteristics that have been identified inthe new application. In one embodiment, if the identifiedcharacteristics are different from the characteristics attributable tothe component identity, then an alert is generated to indicate that thebehavior of the component has changed. The characteristics attributableto the component identity may be stored in database 112 of identityserver 110 and may be accessed when making this comparison. For example,these attributable characteristics may be stored as component dataassociated with respective component identities 114 (i.e., known dataregarding component behavior or other characteristics of a component maybe stored for each component identity 114).

Now, further detail regarding how component analysis is performed isdescribed below. As mentioned above, an application is decomposed intoidentifiable components. In particular, a data repository stores a setof component identities in a database.

Each component identity has identifying information for a givencomponent that, if present in an application, indicates that the givencomponent is present in the application. Examples of identifyinginformation include the following: a package name prefix for a set ofone or more classes, a class name, or a code fingerprint of a codeblock, method, class, package, etc.

When used, fingerprinting can be performed in a variety of ways. A firstway is the creating of an abstract representation of an instruction set.Another way is to, from an abstract representation, create a set ofn-gram indices that can create a fingerprint identifier for a set ofcode (e.g., a hash of indices) or that can be compared to another set ofindices to perform a fuzzy match. In yet another way, asset or resourcefingerprinting may be used. As a final way, fingerprinting may be doneby analyzing the network traffic generated by an application on a deviceor in a dynamic analysis system. Server communication, network trafficdestined to a server, may be used to associate a component with aparticular network service. Some examples of network traffic includetraffic to server with name server1.somewhere.com, traffic to serverwith IP 8.8.8.8 or 2001:4860:4860::8888, HTTP request with header“User-Agent: MyHttpLibrary-1.1”, HTTP request with a particular URI orURI pattern, and traffic that matches a SNORT or YARA rule.

Analysis of a new application can be used to determine if identifyinginformation for a given component identity matches the new application.If it matches, then the given component is present in the newapplication. This analysis can be done at the client (e.g., mobiledevice 149), the server (e.g., identity server 110), or using acombination thereof.

In one embodiment, the analysis is done at one computing device (e.g.,either on the client or the server). The database of identifyinginformation is stored locally on the computing device. The newapplication is also present locally (e.g., the new application itselfhas been previously sent to identity server 110 from mobile device 149,or from application marketplace or software server 127 prior toinstallation on mobile device 149).

In this embodiment, there are multiple options for analysis. In a firstoption, for each item of identifying information in the database, thenew application is searched to determine if the identifying informationmatches the new application. Alternatively, information can be extractedfrom the new application, and then a check or comparison done to see ifthat information matches any of the identifying information stored inthe database.

In another embodiment, a client computing device submits information toa server to determine components that are present in an application. Thedatabase of component identifying information (known component data) isstored on the server. The application is present on the client. Theclient extracts information (e.g., component identifying information)from the application, and then sends this extracted information to theserver.

The server checks to see if the extracted information matches any of theidentifying information in the database (e.g., the extracted informationmay be received as a query from mobile device 149). If so, the serversends back information about component identities to the client (e.g.,the server sends results from the query to mobile device 149).

In a different embodiment, the client computing device submits anidentifier for the new application to the server. This identifier maybe, for example, a hash of the application binary code, a package name,a title of the application, or another form of application identifier.The server stores data regarding previously-analyzed applications. Thisdata includes a list of components for each of the previously-analyzedapplications. In yet other embodiments, the application information isgathered from an application store or marketplace, or from anotherdevice different from the client computing device (e.g., where theapplication is not installed on a client computing device, but is storedwithin an application store for downloading and installation, or isbeing staged for placement into an application store). Information fromor about the application may be gathered from the application store ormarketplace, or such other device. U.S. Publication No. 2012/0240236,filed 2010 Aug. 25, entitled “Crawling Multiple Markets andCorrelating,” is incorporated by reference as if fully set forth herein.U.S. Publication No. 2012/0240236 is a continuation-in-part of U.S. Pat.No. 8,533,844, entitled “System and Method for Security Data Collectionand Analysis.”

The server uses the identifier received from the client and comparesthis identifier to the data regarding previously-analyzed applications.If there is a match between the identifier and a previously-analyzedapplication, then the components for that matched application (obtainedfrom the stored list of components above) are determined to be in thenew application (and this result may be sent to the client device). Thismatching to the database may be done similarly as was described earlierabove for the component analysis on a single device. The server sendsinformation about these identified component identities back to theclient.

After a component has been identified as being present in anapplication, the identity of the component may be displayed to the user.For example, identification and display of components present in anapplication may be done similarly as was described above for the AdNetwork Detector. Behavioral and/or structural characteristics that areattributable to a given component as stored in the database for variouscomponent identities may be sent from the server to the client devicefor those components that have been identified as being present in anapplication.

In one embodiment, there are various ways to identify characteristicsthat are actually present in a component of an application. For example,U.S. Pat. No. 8,533,844, issued Sep. 10, 2013, and entitled “System andMethod for Security Data Collection and Analysis”, by Mahaffey et al.;and U.S. patent application Ser. No. 13/958,434, filed 2013 Aug. 2,entitled “ASSESSING A DATA OBJECT BASED ON APPLICATION DATA ASSOCIATEDWITH THE DATA OBJECT,” which applications are incorporated by referenceas if fully set forth herein, provide a general discussion about thegathering of information from an application on a mobile device forfurther processing at a server. According to this embodiment,information that has been gathered as described by Mahaffey et al. inU.S. Pat. No. 8,533,844 is then used for component analysis at identityserver 110 in order to identify characteristics of a component.

In another embodiment, behavioral characteristics may be determined orcollected using other approaches. For example, behavior may bedetermined based on network traffic (e.g., SMS, IP) data, or based onthe code source of a given behavior (e.g., a class name or a packagename responsible for geo-locating, or a fingerprint of a code segmentresponsible for sending SMS traffic).

In one embodiment, component identity-attributable characteristics arecompared to actually-present characteristics (e.g., as gathered for anew application just installed on a mobile device). For example, ifbehavior is part of the known data for a component identity, and a newapplication's component behavior matches this known behavior, then it isassumed that information about the component identity (e.g., in database112) applies to the new application. Information about the componentidentity may include, for example, a text description, risk scoring, anddata whether an application is malware or is not malware. For example,this information may be provided as a result or response to a query froma mobile device.

If the actual behavior and the known behavior for the component identityare different, this may indicate that the component in the newapplication is a newer version or a tampered-version, and that thecomponent needs to be reviewed again in order to update the database.Also, an alert may be generated based on the component informationdetermined above. For example, an email may be sent to an analyst to dofurther analysis of a component, or an entry may be created in a workqueue regarding further component analysis to be done.

In various other embodiments, the results from component identificationfor applications on a device are presented to the user. The user mayprovide input in a user interface to define or update a user policybased on this component identification. For example, the user mayopt-out of an identified component.

In another embodiment, a component review process is provided forreviewing potentially undesirable code at scale (where manual review isnot practical). The component analysis as described above is automatedso that a human is not required to do component analysis manually.Characterizing components that have been previously reviewed (e.g.,stored as data for a component identity with a risk score) anddetermining when that component has changed behavior (i.e., the actualbehavior is different from the known behavior stored in the componentidentity) can create an automated process where humans only need tore-review component code when its behavior has changed. A behaviorchange may also be associated with a code fingerprint having changedslightly (e.g., if doing a fuzzy match, there is a threshold for whichit is considered that there is no change, and another threshold forwhich it is considered that that there is a match, but that there is asufficient change in behavior). In various embodiments a comparison to athreshold may be done to see if a value is lower or greater than thethreshold (which may include the cases of equal to or lower, or equal toor higher than the threshold). Similarly, other characteristicsdisclosed can be used to determine if the component in the newapplication exactly matches the known component or if it partiallymatches in a way that merits re-analysis.

Yet another embodiment relates to behavioral risk analysis ofapplications. In this embodiment, the component analysis involvesseparating identified components that have already been reviewed (i.e.,components that have known component data stored in database 112), andthat are common across numerous different applications (or across copiesof the same application) as installed on many user devices, fromcomponents that are unique (e.g., an associated behavior has not beenobserved before) to a particular new application (e.g., behavior uniqueto a single, most-recent installation on mobile device 149). Theseunique behaviors are specifically audited within the context of the newapplication (e.g., application 102).

As an example of context, it is common for ad networks to ask forlocation data. This is a well-accepted behavior. If a user is looking,for example, at a game like Angry Birds, an application that asks for alocation may be exhibiting acceptable behavior if this behavior isassociated with an ad network that has been previously observed as beingacceptable (e.g., as determined from data stored database 114). However,in other cases, actual game code that is itself asking for location maybe inappropriate behavior.

The amount of code that is unique to any given application is typicallyfairly small. Most applications (e.g., for mobile devices) predominantlyuse code that is in at least one or many other applications (themajority of code in an application is typically not unique and there isa lot of commonality in code between applications).

Sometimes, when a behavior is analyzed in the context of a known SDK,the behavior is a repeatable behavior that has previously beendetermined to be acceptable (or to have a low risk score). Thus, forexample, if a library has already been reviewed, then further analysiscan be skipped.

In an embodiment regarding similarity of known and new applications,fuzzy matching and fingerprinting may be used (as was discussed above).For example, a similarity score of zero to one may be used. A similarityscore is returned from the server after analysis of a new application.The code in the new application is compared to code that is already inthe identified component library (e.g., a library in database 112 onidentity server 110).

Typically, there is not an exact code similarity match because there aremany changes that a compiler can make to a particular applicationinstallation to make it different than other installations. Similaritiesare defined so that if the differences are over a similarity threshold,then a determination is made that a known component is present in thenewly-installed application. For example, the new application may beinclude a slightly-customized version of a component (that waspreviously determined to be acceptable). In alternative embodimentsother forms of comparison to a threshold may be done (e.g., where avalue is lower than the threshold). In other cases, the new applicationmay include a new version of a component that has not been previouslyanalyzed. In one embodiment, unacceptable code that has been onlyslightly modified to defeat similarity protection mechanisms is insteaddetected as unacceptable based on behavioral observation and componentanalysis as discussed above.

In one embodiment, components are analyzed with respect to similarity ofpreviously known components. Behaviors can include use of personalidentifying information or device information, or any actions that canbe taken by applications on the device, including user interfacedisplays, notifications, network communications, and file reading orwriting actions. Policies to control or restrict the behavior ofapplications and their components may be defined and applied. This caninclude the identification of advertising networks and defining policiesto permit various opt-out actions for these advertising networks.

Assessing Application Authenticity

Various embodiments related to assessing application authenticity arenow set forth below. In one embodiment, a method includes: evaluating(e.g., by a server or a user device) authenticity of a first application(e.g., software being downloaded to a mobile device) to provide aresult, where the evaluating uses a plurality of inputs. In response tothe result, an action is performed on the computing device. For example,the evaluating may be done by a server for an application that a user ofa mobile device desires to install from an application marketplace. Inone embodiment, the computing device is a server, and the action issending a notification from the server to the mobile device, thenotification including an assessment of authenticity of the firstapplication.

In one embodiment, the computing device is a user device on which thefirst application is being or has been installed, and the action isproviding of a notification in a user interface of the user devicerelating to an assessment of authenticity of the first application. Inan alternative embodiment, the application may have been previouslyinstalled on the user device, but the user desires an evaluation ofauthenticity (e.g., to consider whether to remove the application fromthe user device).

In one embodiment, one or more of the plurality of inputs may bereceived from a distributor of the first application, an onlineapplication store, a carrier/operator/device manufacturer (e.g., forpreloaded software on a mobile device), and/or from a computing devicewithin an enterprise or an organization's internal network.

In one embodiment, the computing device is a server, and the firstapplication has a first package identifier and a first signingidentifier, the method further comprising receiving the first packageidentifier and the first signing identifier from a user device on whichthe first application is being or has been installed. The first packageidentifier may be, for example, an Android package name, an Apple iOSbundle identifier, or a hash of such name or identifier, etc. The firstsigning identifier may be, for example, a certificate (e.g., a signingcertificate, digital certificate, etc.), a certificate thumbprint, or apublic key, or a hash of a certificate, a hash of a public key, or otherdata which can be used to identify the signer. In one embodiment, themethod further comprises receiving the first application itself from theuser device (e.g., for testing or other operation for evaluation by theserver).

In one embodiment, the plurality of inputs comprises receipt (e.g., froma computing device of a developer of the first application) of adeveloper signing certificate for the first application, and theevaluating comprises comparing the developer signing certificate to thefirst signing identifier.

In one embodiment, the plurality of inputs comprises one or more of thefollowing: receipt, from a computing device, of an indication ofownership in the first application by a developer (e.g., a developer ofknown or assumed credibility simply makes an assertion or claim toownership in an electronic communication); a prevalence of the firstapplication (e.g., the application is the most popular version that hasbeen distributed and this version is assumed to be authentic); and amodel (e.g., a model to predict expected characteristics associated witha first application and/or to assess observed behavior orcharacteristics for the first application). In one embodiment, the firstapplication has a first signing identifier, and the plurality of inputscomprises a history of the first signing identifier.

In one embodiment, the method further comprises comparing a firstsigning identifier of the first application to a signing key in aregistry of known signing keys. In one embodiment, the registrycomprises a plurality of package identifiers, each identifier associatedwith a respective one of the known signing keys, and the method furthercomprises comparing a first package identifier of the first applicationto the plurality of package identifiers.

In one embodiment, the result from the evaluating is a score, and theperforming of the action is conditional on the score exceeding athreshold (or other alternative forms of comparison to the threshold).

In one embodiment, the evaluating comprises: identifying a plurality ofapplications that are similar to the first application (e.g., usingcomponent analysis as discussed above); classifying the similarapplications, based on a respective signing identifier for eachapplication; and identifying, based on the classifying, applicationshaving a signing identifier of a developer, and applications having asigning identifier that is different from the signing identifier of thedeveloper.

In one embodiment, the method further comprises sending a notificationto a computing device of the developer that identifies the applicationshaving the signing identifier that is different from the signingidentifier of the developer.

In one embodiment, the identifying the plurality of applications thatare similar to the first application comprises identifying applicationshaving at least one of an identical package identifier, code similarity,identical strings, similar strings, identical media assets, and similarmedia assets. In one embodiment, a server determines the similarity ofnewly-observed applications to a previously known-to-be authenticapplication (e.g., stored in a database at the server). In one example,this determination includes component analysis (e.g., comparison ofknown and new components) and/or application/component/code similarityassessment as was discussed earlier above. In another example, theserver can notify the developer of the authentic application, orchallenge the developer to authenticate itself as the actual applicationsigner for the newly-observed application(s).

In one embodiment, the method further comprises receiving the signingidentifier of the developer, sending data to the developer to be signedby the developer with a private key, receiving the signed data from thedeveloper, and confirming the signed data corresponds to the signingidentifier of the developer. For example, the data sent to the developermay be an archive or a nonce, or the data may be for the issuing of acrypto-based challenge to the developer.

In yet another embodiment, the first application may be examined in thecontext of known business entity databases (e.g., Equifax database, Dun& Bradstreet database, etc.) or other information sources, andinformation obtained from such sources may be used as one or more of theplurality of inputs in the evaluating of the first application. Forexample, these inputs may include: the company name as determined from aWHOIS response; the name of an owner of the IP space that the firstapplication talks to (e.g., an inquiry can be made as to who owns theapplication server that the first application communicates with); theresponse to an inquiry as to whether the package name for the firstapplication corresponds to a valid organizational domain name, andfurther whether that domain name's WHOIS name shows up in a businessdatabase; and the developer name as determined in an online applicationstore such as Google Play.

FIG. 10 shows a system for assessing authenticity in which mobile device149 of a user communicates with authenticity server 1005 to evaluate theauthenticity of new application 1013, for example which is beingnewly-installed on the mobile device (or alternatively has already beeninstalled), according to one embodiment. In other embodiments, some orall of the authenticity functions described for authenticity server 1005may be performed by identity server 110, which was discussed above withrespect to component analysis.

Authenticity server 1005 receives from mobile device 149 a packageidentifier and a signing identifier associated with new application1013. Authenticity server 1005 uses a plurality of inputs, such as aredescribed herein, to evaluate the authenticity of new application 1013.This evaluation provides a result, for example a score indicating therisk of the new application being inauthentic. Based on this result, anaction is performed by authenticity server 1005.

In one example, this action is the sending of a notification to mobiledevice 149 in order to alert the user that the new application 1013 maybe fraudulent or a tampered version. New application 1013 may have beenprovided, for example, to application marketplace 123 or directly tomobile device 149, by developer server 1011, along with a signingcertificate 1001. Developer server 1011 also provides a packageidentifier for new application 1013. Signing certificate 1001 is oneform of signing identifier that may be provided to authenticity server1005 for evaluation of new application 1013.

Authenticity server 1005 has a database 1007 for storing information anddata regarding applications, such as previously known or identifiedapplications that are considered to be authentic. The authenticdeveloper or other source of the application is stored in database 1007.Database 1007 further may include component data 1009, which correspondsto information about software components as was discussed earlier above.Database 1007 further may include repository 1003, which stores packageidentifiers and corresponding signing identifiers, for example such ascollected or identified for previously authentic, known-good, or deemedgood applications.

The evaluation of authenticity may alternatively be performed in part orfully on mobile device 149. If an inauthentic application is discovered,then the user of mobile device 149 may be notified on a display of auser interface. This notification may include an assessment of theauthenticity of the new application 1013.

In one embodiment, authenticity server 1005 compares signing certificate1001 to an existing signing identifier contained in repository 1003.Authenticity server 1005, in one example, compares signing certificate1001 to a known, good signing key stored in repository 1003.

Various other non-limiting embodiments are now described below. In afirst embodiment, authenticity server 1005 has a registry of knownapplication signing keys and the package names they are registered for.If an application pretends to own one of those package names with adifferent signing key, a user is alerted that the application is likelytampered with. In some cases, authenticity server 1005 may also usesimilarity detection (e.g., similarity analysis as was discussed earlierabove) to determine that, even if an application has a different packagename, it is highly similar to another previously-known application, buthas a different signer.

In one embodiment, all applications are identified that are similar to agiven application (e.g., where the given application is beingnewly-installed on a mobile device). One or more of the following inputsmay be used in evaluating the new application: whether applications havethe same package name, code similarity between the applications, similaror identical strings (especially strings that occur infrequently)between new and known applications, and similar or identical mediaassets (e.g., images, sounds, video, etc.) between new and knownapplications. In some embodiments, similarity and/or component analysisas was discussed above may be used.

In one embodiment, applications that have been determined to be similar(e.g., as described above) are classified based on signing certificates,which are used to classify applications into two groups: applicationswith a given developer signing certificate, and applications with adifferent signing certificate. This classification is used for one ormore of the following: identifying potentially pirated applications(e.g., for copyright enforcement); identifying potentially maliciousapplications; optimizing a sales strategy (e.g., such as identifyingadditional markets where an application could be sold); and managingrelease processes (e.g., identifying versions of an application that aresold in different markets).

In one embodiment, a workflow for establishing ownership of a signingcertificate includes: a developer or other user uploads the certificate,then receives download of a jar (or Java archive), which the developermust sign to prove that it has the private key corresponding to thecertificate. In one embodiment, the workflow is extended to allow adeveloper to manage multiple signing certificates.

In one embodiment, a workflow for discovering applications, based onproof of certificate ownership includes: a developer or other userproves certificate ownership, then authenticity server 1005 finds allpackages signed with the same certificate, and also identifies similarapplications, signed both by the same certificate and othercertificates. In one embodiment, the workflow is extended to allow adeveloper to manage multiple signing certificates.

In an alternative embodiment, authenticity server 1005 providesmonitoring and security services to Android or other system developers.These services determine developer identification (to confirm that thedeveloper is who it purports to be). The services may include monitoringtools and/or anti-piracy functions. If the developer's application hasbeen pirated and is being distributed in different markets, authenticityserver 1005 notifies the developer.

The services may also include brand protection. For example, a bank maywant to know if a version of its application has been pirated and isbeing misused for phishing. In one embodiment, the services includelooking at actual software assets being used in applications (e.g.,logos, images, etc.) to determine if they are being used innon-sanctioned manners. Application assessments and/or reports for theabove services may be provided to a brand owner, developer, or otherentity. In another example, a vendor of application components (e.g.,such as advertising SDKs, sensor activity SDKs, etc.) may want to knowif a version of its components are being used in an application. In oneembodiment, the services include looking at application components beingused in applications (libraries, SDKs, components, etc.) to determinethat they are being used in sanctioned or non-sanctioned manners.Application assessments and/or reports for the above services may beprovided to a vendor or developer or distributor of such applicationcomponents or other entity.

In one embodiment, an assessment of privacy is provided by the services.This includes analyzing potential privacy issues in the application.Authenticity server 1005 may generate a privacy policy for the developerbased on permissions provided by the developer. In one embodiment, asecurity assessment is provided by the services. Authenticity server1005 analyzes potential security vulnerabilities and providesrecommendations to the developer or other entity.

In one embodiment, the services above permit a developer to develop agood reputation. For example, an application/developer certification maybe provided to end users after an evaluating of authenticity of anapplication. For example, a seal of approval or other visual indicationmay be provided in a user interface display for this purpose to indicateto a user that an application is authentic. The services above may besupported by analysis of application components as described above(e.g., when providing piracy or brand protection).

Additional information regarding various non-limiting examples ofanalyzing, characterizing, and/or scoring applications with respect tosecurity is described in previously-published U.S. Patent PublicationNo. 2011/0047594, published Feb. 24, 2011, entitled “System and Methodfor Mobile Communication Device Application Advisement,” by Mahaffey etal., and also in previously-published U.S. Patent Publication No.2013/0263260, published Oct. 3, 2013, entitled “System and Method forAssessing an Application to be Installed on a Mobile CommunicationDevice”, by Mahaffey et al., the entire contents of which applicationsare incorporated by reference as if fully set forth herein.

In particular, U.S. Patent Publication No. 2013/0263260 describes asystem that checks for harmful behavior of an application to beinstalled on a mobile communication device. A server computer receivesfrom the mobile communication device data pertaining to the applicationto be installed and information pertaining to the mobile communicationdevice. The server processes the data and information to determine anassessment for the application to be installed. The assessment isprovided to the mobile communication device and the assessment isdisplayed on the device if the assessment is one of dangerous andpotentially dangerous. The data and information received from the mobilecommunication device may be used, for example, as one or more inputs inthe plurality of inputs for evaluating the first application asdescribed herein.

Also, in particular, U.S. Patent Publication No. 2011/0047594 describesa system for providing advisement about applications on mobilecommunication devices such as smartphones, netbooks, and tablets. Aserver gathers data about mobile applications, analyzes theapplications, and produces an assessment that may advise users on avariety of factors, including security, privacy, battery impact,performance impact, and network usage. The disclosure helps usersunderstand the impact of applications to improve the experience in usingtheir mobile device. The disclosure also enables a server to feedinformation about applications to other protection systems such asapplication policy systems and network infrastructure. The disclosurealso enables advisement about applications to be presented in a varietyof forms, such as through a mobile application, as part of a webapplication, or integrated into other services via an API. The datagathered by the server may be used, for example, as one or more inputsin the plurality of inputs for evaluating the first application asdescribed herein. Also, some of the forms of advisement discussed may beused, for example, in providing notifications to the user and/or todevelopers or others regarding evaluations of software authenticity.

Additional information regarding various non-limiting examples of someanalytic methods for determining application behavior is described inU.S. patent application Ser. No. 14/063,342, filed Oct. 25, 2013,entitled “System and Method for Creating and Assigning a Policy for aMobile Communications Device Based on Personal Data,” by Timothy MichealWyatt, the entire contents of which application is incorporated byreference as if fully set forth herein. For example, one or more of themethods for determining behavior may be used when evaluating applicationauthenticity as described herein.

Additional information regarding various non-limiting examples ofsecurity evaluation and scoring relating to a plurality of trust factorsis described in U.S. patent application Ser. No. 14/072,718, filed Nov.5, 2013, entitled “Method and System for Evaluating Security for anInteractive Service Operation by a Mobile Device,” by Derek Halliday,the entire contents of which application is incorporated by reference asif fully set forth herein. For example, some of the trust factors may beused as inputs when evaluating application authenticity.

In one specific example, the context in which a signing certificate orother signing identifier or signing is observed is assessed usingfactors which may include one or more trust factors as described in U.S.patent application Ser. No. 14/072,718 above. These factors may, forexample, be used in formulating a score that is compared to a thresholdthat is used to make a decision whether to perform an action in responseto evaluating an application (e.g., various forms of comparison to thethreshold may be used, as described previously).

In particular, U.S. patent application Ser. No. 14/072,718 describes amethod for evaluating security during an interactive service operationby a mobile communications device that includes launching, by a mobilecommunications device, an interactive service configured to access aserver over a network during an interactive service operation, andgenerating a security evaluation based on a plurality of trust factorsrelated to a current state of the mobile communications device, to asecurity feature of the application, and/or to a security feature of thenetwork. When the security evaluation is generated, an action isperformed based on the security evaluation. In some examples, theseactions may be performed in response to the result from an evaluation ofapplication authenticity.

In another embodiment, the first application is evaluated to determineits components and/or to identify behaviors associated with each of thecomponents. This evaluation may provide some or all of the plurality ofinputs used in the evaluating of the first application as was discussedabove. In one embodiment, the components of the first application can beanalyzed regarding similarity to previously-known components whenassessing authenticity of the first application.

Behaviors associated with one or more components of the firstapplication may include, for example, use of personal identifyinginformation or device information, or any actions that can be taken byapplications on the device, including user interface displays,notifications, network communications, and file reading or writingactions. In one embodiment, the evaluating of the first application mayinclude analysis of components of the first application as described inthe section above titled “Analyzing Components of an Application” (andalso further optionally include analysis of components in otherapplications being compared to the first application).

In one embodiment, the first application above is a mobile application,which contains one or more components, such as were discussed previouslyabove. The source of the components is indicated by a componentidentity. In one example, the component identity is an authorship (e.g.,an identification of a developer of the first application), or the nameof a component. Previously collected data associated with a givencomponent may be stored in a database (e.g., as was discussed above withrespect to database 112).

In one embodiment, as discussed in more detail below, for a firstapplication being installed on mobile device 149, components areidentified and behaviors exhibited on mobile device 149 are attributedto one or more of the components. Any given component may be present inseveral different applications on mobile device 149 and/or may be commonto numerous copies or versions of an application that have beeninstalled on mobile or other computing devices for large numbers ofother users. In one embodiment, this commonality of component presencepermits observing and collecting structural and behavioral dataassociated with the component. This known component data is stored in adatabase, and the component data is associated with a particularcomponent identity. Thus, a data repository of prior component data canbe used to compare to data more recently obtained for new components(such as those identified in newly-installed applications on a mobiledevice) when evaluating authenticity of the first application beinginstalled.

More specifically, as characteristics and behaviors associated withcomponents on mobile device 149 are identified and attributed, thesecharacteristics and behaviors may be compared with known characteristicsand behaviors stored either locally on mobile device 149 or storedremotely on an authenticity server (and/or identity server 110 as dataassociated with component identities 114). The results from suchcomparisons may be used as inputs for the evaluating of the firstapplication being installed (e.g., for making decisions regardingdisabling of one or more particular components that are being consideredfor a new installation on the mobile device).

In one embodiment, behavioral and/or structural characteristics of acomponent present in the first application may be identified (e.g., aswas discussed in the section titled “Analyzing Components of anApplication” above). This may be, for example, an application that isbeing installed on mobile device 149 and for which the user desires todetermine if the application is from an authentic source (e.g., a knowndeveloper of an earlier or related version of the new application).

A comparison is made between the characteristics attributable to the acomponent associated with the first package identifier andcharacteristics that have been identified in the new application. In oneembodiment, if the identified characteristics are different from thecharacteristics associated with the first package identifier, then analert is generated to indicate that the new application is notauthentic. The characteristics associated with the first packageidentifier may be stored in a database of authenticity server 1005 andmay be accessed when making this comparison (alternatively, thecharacteristics may be stored in database 112 and/or the comparison madeor supported by identity server 110). For example, these attributablecharacteristics may be stored as component data associated withrespective component identities.

Each component identity has identifying information for a givencomponent that, if present in an application, indicates that the givencomponent is present in the application. Examples of identifyinginformation include the following: a package name prefix for a set ofone or more classes, a class name, or a code fingerprint of a codeblock, method, class, package, etc.

Analysis of a new application being installed can be used to determineif identifying information for a given component identity matches thenew application. If it matches, then the given component is present inthe new application. This analysis can be done at the client (e.g.,mobile device 149), the server (e.g., authenticity server 1005 oridentity server 110), or using a combination thereof. This match thatdetermines presence of the component in the new application can be usedas an input in evaluating authenticity of the new application.

In a different embodiment, the client computing device submits anidentifier for the new application to the server. This identifier maybe, for example, a hash of the application binary code, a package name,a title of the application, or another form of application identifier.The server stores data regarding previously-analyzed applications. Thisdata includes a list of components for each of the previously-analyzedapplications.

The server uses the identifier received from the client and comparesthis identifier to the data regarding previously-analyzed applications.If there is a match between the identifier and a previously-analyzedapplication, then the components for that matched application (obtainedfrom the stored list of components above) are determined to be in thenew application. This result may be sent to the client device. Also,this result may be used as one of the plurality of inputs in evaluatingthe application. In one example, this matching to the database is donesimilarly as was described earlier above for the component analysis on asingle device. The server sends information about these identifiedcomponent identities back to the client (e.g., a notification that a newapplication is not authentic, or a score indicating the risk of afraudulent application).

If the actual behavior and the known behavior for the component identityare different, this may indicate that the component in the newapplication is either a newer version or a tampered-version (i.e., isnot authentic), and that the component needs to be reviewed again inorder to update the database. Also, an alert may be generated based onthe component information determined above. For example, an email may besent to an analyst to do further analysis of a component, or an entrymay be created in a work queue regarding further component analysis tobe done. In another example, a notification is sent to the developer ofa prior, known-good version of an application (e.g., to alert thedeveloper that an fraudulent version of the application was identified).

Yet further additional non-limiting embodiments and examples are nowdiscussed below. In a first embodiment, a developer registers through awebsite and provides its signing key. The developer claims ownership ofa given application. An application that is signed with this key isconsidered to be owned by the developer. If the same application issigned by a different person or entity, then authenticity server 1005alerts the developer that another entity is potentially illegitimate.

In one embodiment, authenticity server 1005 implements an authenticitycomponent and a response component. An application is evaluated by theauthenticity component and the result from the authenticity component isacted upon by the response component.

The authenticity component is a data set that may include a plurality ofinputs used for evaluating an application. For example, these inputs mayinclude that a developer signs an application, the prevalence of anapplication, the context or environment in which the application isobserved, and a history of the signing key or certificate associatedwith an application. The output from this evaluation may be a score suchas, for example, 0.4 or 0.6 on a scale of 0.0-1.0. This multi-inputauthenticity component model provides a result that is acted upon by theresponse component.

Another embodiment is based on probability, in which it is assumed thatthe most popular version of a given application is the legitimate one.Another embodiment assumes that the application that is published inGoogle Play, or another legitimate application store, is the legitimateor authentic one.

If another version of that same application is signed by a differentperson, then one of the applications is authoritative and the other isnot. Authenticity server 1005 alerts the user the mobile device as towhether a version being installed is authentic.

In one embodiment, there are various ways to determine the authenticversion of several versions of an application being distributed. In somecases the most popular version of an application may not be theauthentic version of the application. Thus, a collection of factors areused from the exemplary inputs provided above (e.g., whether theapplication is published in the Google Play store, what is the contextof the observation of the application, does the application have goodonline reviews over an extended predetermined time period, such as forexample more than 6 months, etc.).

In one embodiment, the history of usage of a signature is considered asan input. For example, if a signing key is used to sign an applicationthat authenticity server 1005 knows is bad, then if that same key signsother applications, those applications can also be assumed to be bad.This is like a signer reputation. If the signer is connected to priorsuspicious activity, then the signer itself can be flagged assuspicious, and this fact considered in evaluating authenticity.

Another input may be the signing of different applications thatauthenticity server 1005 knows are provided from different developers.Another input is that the applications may communicate with differentservers in different parts of the world—this indicates that one of theapplications is not authentic and/or that there are potentiallydifferent developers.

In one embodiment, the first appearance of a signed applicationindicates authenticity. For example, the first person to sign andpackage that application is considered or assumed to own it.Authenticity server 1005 may have a huge network of devices (e.g.,greater than 10,000 or 1 million devices) that report all theapplications that they see. Therefore, presumably the legitimateapplication appears first as stored in database 1007. For example, thefirst time that the server sees an application, it will take thesignature on that application and consider it to be the authenticsignature.

In one embodiment, another input is the number of stars or other ratinglevel that an application gets in Google Play or another store. Forexample the application may have been in a store for at least apredetermined time period (e.g., at least one or two years) and have agood rating. If the application has at least a predetermined number ofratings, for example, 300,000 ratings, and a star value over a givenlevel, then the application is likely a legitimate version of theapplication.

In one embodiment, the longevity of the key is an input. The longevitymay be a weighted user distribution based on time period and number ofusers. For example, if the application is observed for a year, but withvery little users, that is a negative input. However, in contrast,having a million users over a year is a positive sign.

In one embodiment, various inputs are provided into a black box modelused in authenticity evaluation. The inputs may include, for example,the signing key as registered by the developer itself, the usage historyof a signing key, a history-weighted time of first appearance, anappearance in certain reputable application stores, a signing key usedto sign applications that are substantially different, applications thattalk to substantially different servers, applications that havesubstantially different code bases, and two applications that are signedand appear under different developer names in an authoritativemarketplace such as Google Play.

In one embodiment, there are different interfaces provided for differentusers to provide information from authenticity server 1005 about theresult from the evaluation of the authenticity. For the end-user, theremay just be a warning provided (e.g., a popup that states that anapplication is not authentic). An alternative is a notice that indicates(e.g., a seal that appears in the lower right-hand corner of a window)to the user that this is an authentic application. As one example, auser is presented and sees an authentication seal when a bankingapplication is being installed by the user on its mobile device.

Closing

In this description, various functions and operations may be describedas being performed by or caused by software code to simplifydescription. However, those skilled in the art will recognize what ismeant by such expressions is that the functions result from execution ofthe code by a processor, such as a microprocessor. Alternatively, or incombination, the functions and operations can be implemented usingspecial purpose circuitry, with or without software instructions, suchas using an Application-Specific Integrated Circuit (ASIC) or aField-Programmable Gate Array (FPGA). Embodiments can be implementedusing hardwired circuitry without software instructions, or incombination with software instructions. Thus, the techniques are limitedneither to any specific combination of hardware circuitry and software,nor to any particular source for the instructions executed by the dataprocessing system.

While some embodiments can be implemented in fully functioning computersand computer systems, various embodiments are capable of beingdistributed as a computing product in a variety of forms and are capableof being applied regardless of the particular type of machine orcomputer-readable media used to actually effect the distribution.

At least some aspects disclosed can be embodied, at least in part, insoftware. That is, the techniques may be carried out in a computersystem or other data processing system in response to its processor,such as a microprocessor, executing sequences of instructions containedin a memory, such as ROM, volatile RAM, non-volatile memory, cache or aremote storage device.

Routines executed to implement the embodiments may be implemented aspart of an operating system, middleware, service delivery platform, SDK(Software Development Kit) component, web services, or other specificapplication, component, program, object, module or sequence ofinstructions referred to as “computer programs.” Invocation interfacesto these routines can be exposed to a software development community asan API (Application Programming Interface). The computer programstypically comprise one or more instructions set at various times invarious memory and storage devices in a computer, and that, when readand executed by one or more processors in a computer, cause the computerto perform operations necessary to execute elements involving thevarious aspects.

A machine readable medium can be used to store software and data whichwhen executed by a data processing system causes the system to performvarious methods. The executable software and data may be stored invarious places including for example ROM, volatile RAM, non-volatilememory and/or cache. Portions of this software and/or data may be storedin any one of these storage devices. Further, the data and instructionscan be obtained from centralized servers or peer to peer networks.Different portions of the data and instructions can be obtained fromdifferent centralized servers and/or peer to peer networks at differenttimes and in different communication sessions or in a same communicationsession. The data and instructions can be obtained in entirety prior tothe execution of the applications. Alternatively, portions of the dataand instructions can be obtained dynamically, just in time, when neededfor execution. Thus, it is not required that the data and instructionsbe on a machine readable medium in entirety at a particular instance oftime.

Examples of computer-readable media include but are not limited torecordable and non-recordable type media such as volatile andnon-volatile memory devices, read only memory (ROM), random accessmemory (RAM), flash memory devices, floppy and other removable disks,magnetic disk storage media, optical storage media (e.g., Compact DiskRead-Only Memory (CD ROMS), Digital Versatile Disks (DVDs), etc.), amongothers. The computer-readable media may store the instructions.

The instructions may also be embodied in digital and analogcommunication links for electrical, optical, acoustical or other formsof propagated signals, such as carrier waves, infrared signals, digitalsignals, etc. However, propagated signals, such as carrier waves,infrared signals, digital signals, etc. are not tangible machinereadable medium and are not configured to store instructions.

In general, a tangible machine readable medium includes any mechanismthat provides (e.g., stores) information in a form accessible by amachine (e.g., a computer, network device, personal digital assistant,manufacturing tool, any device with a set of one or more processors,etc.).

In various embodiments, hardwired circuitry may be used in combinationwith software instructions to implement the techniques. Thus, thetechniques are neither limited to any specific combination of hardwarecircuitry and software nor to any particular source for the instructionsexecuted by the data processing system.

Although some of the drawings illustrate a number of operations in aparticular order, operations which are not order dependent may bereordered and other operations may be combined or broken out. While somereordering or other groupings are specifically mentioned, others will beapparent to those of ordinary skill in the art and so do not present anexhaustive list of alternatives. Moreover, it should be recognized thatthe stages could be implemented in hardware, firmware, software or anycombination thereof.

In the foregoing specification, the disclosure has been described withreference to specific exemplary embodiments thereof. It will be evidentthat various modifications may be made thereto without departing fromthe broader spirit and scope as set forth in the following claims. Thespecification and drawings are, accordingly, to be regarded in anillustrative sense rather than a restrictive sense.

What is claimed is:
 1. A method, comprising: evaluating, by a computingdevice, authenticity of a first application to provide a result, theevaluating using a plurality of inputs; and in response to the result,performing an action on the computing device.
 2. The method of claim 1,wherein the computing device is a server, and the action is sending anotification from the server to a mobile device, the notificationincluding an assessment of authenticity of the first application.
 3. Themethod of claim 1, wherein the computing device is a user device onwhich the first application is being or has been installed, and theaction is providing of a notification in a user interface of the userdevice relating to an assessment of authenticity of the firstapplication.
 4. The method of claim 1, wherein the computing device is aserver, and the first application has a first package identifier and afirst signing identifier, the method further comprising receiving thefirst package identifier and the first signing identifier from a userdevice on which the first application is being or has been installed. 5.The method of claim 4, further comprising receiving the firstapplication from the user device.
 6. The method of claim 4, wherein thefirst signing identifier is one of a certificate, a certificatethumbprint, a public key, a signing identifier, a hash of a certificate,and a hash of a public key.
 7. The method of claim 4, wherein theplurality of inputs comprises receipt, from a computing device of adeveloper of the first application, of a developer signing certificatefor the first application, and the evaluating comprising comparing thedeveloper signing certificate to the first signing identifier.
 8. Themethod of claim 1, wherein the plurality of inputs comprises receipt,from a computing device, of an indication of ownership in the firstapplication by a developer.
 9. The method of claim 1, wherein theplurality of inputs comprises a prevalence of the first application. 10.The method of claim 1, wherein the first application has a first signingidentifier, and the plurality of inputs comprises a history of the firstsigning identifier.
 11. The method of claim 1, wherein the plurality ofinputs comprises a model.
 12. The method of claim 1, further comprisingcomparing a first signing identifier of the first application to asigning key in a registry of known signing keys.
 13. The method of claim12, wherein the registry comprises a plurality of package identifiers,each identifier associated with a respective one of the known signingkeys, the method further comprising comparing a first package identifierof the first application to the plurality of package identifiers. 14.The method of claim 1, wherein the result from the evaluating is ascore, and the performing of the action is based on a comparison of thescore to a threshold.
 15. The method of claim 1, wherein the evaluatingcomprises: identifying a plurality of applications that are similar tothe first application; classifying the similar applications, based on arespective signing identifier for each application; and identifying,based on the classifying, applications having a signing identifier of adeveloper, and applications having a signing identifier that isdifferent from the signing identifier of the developer.
 16. The methodof claim 15, further comprising sending a notification to a computingdevice of the developer that identifies the applications having thesigning identifier that is different from the signing identifier of thedeveloper.
 17. The method of claim 15, wherein the identifying theplurality of applications that are similar to the first applicationcomprises identifying applications having at least one of an identicalpackage identifier, code similarity, identical strings, similar strings,identical media assets, and similar media assets.
 18. The method ofclaim 15, further comprising receiving the signing identifier of thedeveloper, sending data to the developer to be signed by the developerwith a private key, receiving the signed data from the developer, andconfirming the signed data corresponds to the signing identifier of thedeveloper.
 19. The method of claim 1, wherein the computing device is aserver, and the first application has a first package identifier and afirst signing identifier, the method further comprising receiving thefirst package identifier and the first signing identifier from anapplication store, an application marketplace, or a computing devicethat provides a staging environment for an application store ormarketplace.
 20. The method of claim 1, wherein the performed action isbuilding or updating a data set about the first application.
 21. Themethod of claim 15, wherein the performed action is storing ofinformation about the first application in a data repository.
 22. Asystem, comprising: at least one processor; and memory storinginstructions configured to instruct the at least one processor to:evaluate authenticity of a first application to provide a result, theevaluating using a plurality of inputs; and in response to the result,perform an action on the system.
 23. The system of claim 22, wherein theperformed action is storing of information about the first applicationin a data set, and the evaluating comprises: identifying a plurality ofapplications that are similar to the first application; classifying thesimilar applications, based on a respective signing identifier for eachapplication; and identifying, based on the classifying, applicationshaving a signing identifier of a developer, and applications having asigning identifier that is different from the signing identifier of thedeveloper.
 24. A non-transitory computer-readable storage medium storingcomputer-readable instructions, which when executed, cause a system to:evaluate, by a computing device, authenticity of a first application toprovide a result, the evaluating using a plurality of inputs; and inresponse to the result, perform an action on the computing device. 25.The non-transitory computer-readable storage medium of claim 24, whereinthe performed action is storing of information about the firstapplication in a data set, the computing device is a server, the firstapplication has a first package identifier and a first signingidentifier, and the instructions further cause the system to receive thefirst package identifier and the first signing identifier from anapplication store, an application marketplace, or a computing devicethat provides a staging environment for an application store ormarketplace.